﻿Imports sonicERPinterface
Imports sonicERPinfo
Imports System.Web.Services
Imports Newtonsoft.Json
Imports System.Web.Script.Services


Public Class CadastroCliente
    Inherits Paginabase

#Region "Eventos"


    Public Shared lista As New List(Of TelefoneInfo)

    Public Shared ltbtel As New ListBox




    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            ltbtel = ltbtelefone
            Dim paginavisivel As Boolean
            paginavisivel = New Util().validarpagina(8)
            If Not paginavisivel Then
                FormsAuthentication.SignOut()
                Response.Redirect(ResolveUrl("~/Login.aspx"))
            End If
            PopularCombo()
            lista.Clear()
            If Not Request.QueryString("id") Is Nothing Then
                PopularObjetos()
            End If
        End If
        Dim query As Integer = IIf(Request.QueryString("id") Is Nothing, Request.QueryString("id"), 0)
        Dim tipocliente As Integer = Convert.ToInt32(IIf(rdbtipocliente.SelectedValue Is String.Empty, 0, rdbtipocliente.SelectedValue))
        imgGravar.Attributes.Add("onclick", "return validarpagina(" + "'cliente'," + Convert.ToString(tipocliente) + "," + Convert.ToString(query) + ");")

    End Sub

    Protected Sub imgcep_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgcep.Click
        Try

            Dim cep As New CepInfo
            cep = New Util().BuscaCep(txtCep.Text)
            txtLogradouro.Text = cep.logradouro
            txtEstado.Text = cep.estado
            txtCidade.Text = cep.cidade
            txtBairro.Text = cep.bairro
            txtnumero.Focus()
            System.Threading.Thread.Sleep(3000)
        Catch ex As Exception
            pnlerro.Visible = True
            lblerro.Text = ex.Message
        End Try
    End Sub

    Private Sub imgGravar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgGravar.Click

        Try
            Dim mensagem As String = Insert()


            Util.Alerta(Me.Page, mensagem, "Cliente", IIf(mensagem.Equals("Cadastro Efetuado com Sucesso"), "CadastroCliente.aspx", String.Empty), "300")


        Catch ex As Exception
            Util.Alerta(Me.Page, ex.Message, "Cliente", String.Empty, "300")
        End Try





    End Sub


    'Protected Sub imgtelefone_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgtelefone.Click

    '    Dim telefone = New TelefoneInfo()
    '    telefone.idvalue = ddltipotelefone.SelectedValue + "," + ltbtelefone.Items.Count.ToString()
    '    telefone.telefone = txttelefone.Text + "        " + ddltipotelefone.SelectedItem.Text
    '    lista.Add(telefone)

    '    ltbtelefone.DataSource = lista
    '    ltbtelefone.DataTextField = "telefone"
    '    ltbtelefone.DataValueField = "idvalue"
    '    ltbtelefone.DataBind()
    '    txttelefone.Text = String.Empty
    '    txttelefone.Focus()

    'End Sub

  
    'Protected Sub imgRemoverTelefone_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgRemoverTelefone.Click
    '    lista.Clear()

    '    ltbtelefone = ltbtel

    '    For index = 0 To ltbtelefone.Items.Count - 1

    '        If (Not ltbtel.Items(index).Selected) Then
    '            Dim telefone = New TelefoneInfo()
    '            telefone.idvalue = ltbtelefone.Items(index).Value
    '            telefone.telefone = ltbtelefone.Items(index).Text
    '            lista.Add(telefone)
    '        End If
    '    Next
    '    ltbtel.DataSource = lista
    '    ltbtel.DataTextField = "telefone"
    '    ltbtel.DataValueField = "idvalue"
    '    ltbtel.DataBind()

    '    ltbtelefone.DataSource = lista
    '    ltbtelefone.DataTextField = "telefone"
    '    ltbtelefone.DataValueField = "idvalue"
    '    ltbtelefone.DataBind()
    '    txttelefone.Text = String.Empty
    '    txttelefone.Focus()
    'End Sub

    Private Sub rdbtipocliente_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rdbtipocliente.SelectedIndexChanged

        If Integer.Parse(rdbtipocliente.SelectedValue).Equals(TipoFornecedor.Juridica) Then
            pnlJuridica.Visible = True
            pnllogradouro.Visible = True
            pnlnomeCliente.Visible = True
            pnlFisica.Visible = False

        Else
            pnlFisica.Visible = True
            pnllogradouro.Visible = True
            pnlnomeCliente.Visible = True
            pnlJuridica.Visible = False



        End If
    End Sub

    Protected Sub chkIs_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkIs.CheckedChanged
        If chkIs.Checked Then
            txtIS.Text = "ISENTO"
            txtIS.Enabled = False
        Else
            txtIS.Text = String.Empty
            txtIS.Enabled = True

        End If
    End Sub

    Protected Sub imgExcluir_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgExcluir.Click

        Try
            If Delete() Then
                Util.Alerta(Me.Page, "Cadastro Excluido com Sucesso", "Cliente", "ClienteLista.aspx", "420")
                Exit Sub
            End If

        Catch ex As Exception

            pnlerro.Attributes.CssStyle.Add("display", "block")
            lblerro.Text = ex.Message
        End Try

    End Sub

    Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
        Response.Redirect(ResolveUrl("~/adm/CadastroCliente.aspx"))
    End Sub

    Protected Sub Unnamed2_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
        Response.Redirect(ResolveUrl("~/adm/ClienteLista.aspx"))
    End Sub

#End Region


#Region "Funções"

    Public Sub PopularObjetos()

        sessaousuario.cliente.id = Convert.ToInt32(Request.QueryString("id"))
        dal.cliente.GetlistaID(sessaousuario)
        If sessaousuario.cliente.idtipocliente.Equals(CType(TipoFornecedor.Juridica, Integer)) Then
            pnllogradouro.Visible = True
            pnlnomeCliente.Visible = True
            pnllogradouro.Visible = True
            pnlJuridica.Visible = True
            pnlFisica.Visible = False
            pnlTipocliente.Enabled = False
            txtIS.Text = sessaousuario.cliente.Inscricao_estadual
            txtCNPJ.Text = sessaousuario.cliente.cnpj
            If sessaousuario.cliente.Inscricao_estadual.Equals("ISENTO") Then
                chkIs.Checked = True
            End If
        Else
            pnllogradouro.Visible = True
            pnlnomeCliente.Visible = True
            pnllogradouro.Visible = True
            pnlJuridica.Visible = False
            pnlFisica.Visible = True
            pnlTipocliente.Enabled = False
            txtRg.Text = sessaousuario.cliente.rg
            txtCPF.Text = sessaousuario.cliente.cpf

        End If
        rdbtipocliente.SelectedValue = sessaousuario.cliente.idtipocliente
        txtemail.Text = sessaousuario.cliente.email
        txtCliente.Text = sessaousuario.cliente.nomecliente
        txtCep.Text = sessaousuario.cliente.cep
        txtEstado.Text = sessaousuario.cliente.estado
        txtCidade.Text = sessaousuario.cliente.cidade
        txtLogradouro.Text = sessaousuario.cliente.rua
        txtnumero.Text = sessaousuario.cliente.numero
        txtContato.Text = sessaousuario.cliente.contato
        txtBairro.Text = sessaousuario.cliente.bairro
        For Each item As TelefoneInfo In sessaousuario.cliente.telefones
            item.idvalue = Convert.ToString(item.idtelefone) + "," + Convert.ToString(item.id)
        Next
        lista = sessaousuario.cliente.telefones
        ltbtelefone.DataSource = sessaousuario.cliente.telefones
        ltbtelefone.DataValueField = "idvalue"
        ltbtelefone.DataTextField = "telefone"
        ltbtelefone.DataBind()



    End Sub
    Public Function Insert()
        Dim mensagem As String = String.Empty

        Try

            If (Request.QueryString("id") Is Nothing) Then

                sessaousuario.cliente.idusuario = sessaousuario.usuario.id
                sessaousuario.cliente.idtipocliente = CType(rdbtipocliente.SelectedValue, Integer)
                sessaousuario.cliente.nomecliente = txtCliente.Text
                sessaousuario.cliente.email = txtemail.Text
                sessaousuario.cliente.cep = txtCep.Text
                sessaousuario.cliente.estado = txtEstado.Text
                sessaousuario.cliente.cidade = txtCidade.Text
                sessaousuario.cliente.rua = txtLogradouro.Text
                sessaousuario.cliente.numero = txtnumero.Text
                sessaousuario.cliente.bairro = txtBairro.Text
                sessaousuario.cliente.inativo = False
                sessaousuario.cliente.contato = txtContato.Text
                sessaousuario.cliente.rg = txtRg.Text
                sessaousuario.cliente.cpf = txtCPF.Text
                sessaousuario.cliente.Inscricao_estadual = txtIS.Text
                sessaousuario.cliente.cnpj = txtCNPJ.Text

                dal.cliente.Insert(sessaousuario, True)

                For Each item As ListItem In ltbtelefone.Items
                    sessaousuario.telefone = New TelefoneInfo
                    sessaousuario.telefone.idtelefone = sessaousuario.cliente.id
                    sessaousuario.telefone.idTipoTelefone = item.Value.Substring(0, 1)
                    sessaousuario.telefone.telefone = item.Text

                    dal.telefone.Insert(sessaousuario)
                Next
                mensagem = "Cadastro Efetuado com Sucesso"
            Else
                sessaousuario.cliente.id = CType(Request.QueryString("id"), Integer)
                sessaousuario.cliente.idusuario = sessaousuario.usuario.id
                sessaousuario.cliente.nomecliente = txtCliente.Text
                sessaousuario.cliente.email = txtemail.Text
                sessaousuario.cliente.cep = txtCep.Text
                sessaousuario.cliente.estado = txtEstado.Text
                sessaousuario.cliente.cidade = txtCidade.Text
                sessaousuario.cliente.rua = txtLogradouro.Text
                sessaousuario.cliente.numero = txtnumero.Text
                sessaousuario.cliente.bairro = txtBairro.Text
                sessaousuario.cliente.inativo = False
                sessaousuario.cliente.contato = txtContato.Text
                sessaousuario.cliente.rg = txtRg.Text
                sessaousuario.cliente.cpf = txtCPF.Text
                sessaousuario.cliente.Inscricao_estadual = txtIS.Text
                sessaousuario.cliente.cnpj = txtCNPJ.Text

                dal.cliente.Update(sessaousuario)

                For Each item As ListItem In ltbtelefone.Items
                    sessaousuario.telefone = New TelefoneInfo
                    sessaousuario.telefone.idtelefone = sessaousuario.cliente.id
                    sessaousuario.telefone.idTipoTelefone = item.Value.Substring(0, 1)
                    sessaousuario.telefone.telefone = item.Text

                    dal.telefone.Insert(sessaousuario)
                Next
                mensagem = "Cadastro Alterado com Sucesso"

            End If
            sonicERPDAL.sonicERPDAL.EntidadeDal.TRANS.Commit()
            Return mensagem

        Catch ex As Exception

            sonicERPDAL.sonicERPDAL.EntidadeDal.TRANS.Dispose()
            Throw New Exception(ex.Message)

        End Try

    End Function

    Public Function Delete()
        Try

            If (Not Request.QueryString("id") Is Nothing) Then
                sessaousuario.cliente.id = CType(Request.QueryString("id"), Integer)
                dal.cliente.Delete(sessaousuario)
                Return True
            End If
            Return False
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Function

    Public Sub PopularCombo()
        rdbtipocliente.DataSource = dal.cliente.GetTipoCliente(New ClienteInfo)
        rdbtipocliente.DataTextField = "tipocliente"
        rdbtipocliente.DataValueField = "id"
        rdbtipocliente.DataBind()

        ddltipotelefone.DataSource = dal.telefone.GetTipoTelefone(New TelefoneInfo())
        ddltipotelefone.DataTextField = "tipoTelefone"
        ddltipotelefone.DataValueField = "idtelefone"
        ddltipotelefone.DataBind()
        ddltipotelefone.Items.Insert(0, "Selecione")

    End Sub

    Public Enum TipoFornecedor
        Juridica = 1
        Fisica = 2
    End Enum

#End Region


End Class